In order to simplify the building of a user interface based on C1Scheduler's visual data model, the AutoDistributionGrid grid has been created. It is derived from the System.Windows.Controls.Grid control, but it provides additional functionality. For example:
- Child elements are scattered by rows or columns depending on the Orientation property value (Horizontal or Vertical respectively).
- Settable and bindable RowCount and ColumnCount properties, for example the DependencyProperty, allows you to define row and column counts numerically, without adding or removing items in the Grid.RowDefinitions/ColumnDefinitions collections. Along with the bindable VisualChildCount property, it provides the ability to have as many rows as children.
- You can define grid specific characteristics, such as position and span, for certain child elements. AutoDistributionGrid has a ChildrenDistributionInfo collection of DistributionInfo objects; each DistributionInfo object instructs the grid's child object at index ElementIndex to be (optionally) placed in a cell with Row and Column indexes and to have RowSpan and ColumnSpan spans. If the position is redefined for a certain element, then the next element will be placed in a cell next to this element according to the Orientation specified. If a span is defined and the span direction conforms to the Orientation, then the next element will skip over the span. Each DistributionInfo item's information can be propagated to a number (fixed or infinite) of next elements, which is specified in the Propagate property.